<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Chapter 6. Zend_Console_Getopt</title>
<link rel="stylesheet" href="dbstyle.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.72.0">
<link rel="start" href="index.html" title="Programmer's Reference Guide">
<link rel="up" href="index.html" title="Programmer's Reference Guide">
<link rel="prev" href="zend.config.adapters.xml.html" title="5.4. Zend_Config_Xml">
<link rel="next" href="zend.console.getopt.rules.html" title="6.2. Declaring Getopt Rules">
<link rel="chapter" href="introduction.html" title="Chapter 1. Introduction to Zend Framework">
<link rel="chapter" href="zend.acl.html" title="Chapter 2. Zend_Acl">
<link rel="chapter" href="zend.auth.html" title="Chapter 3. Zend_Auth">
<link rel="chapter" href="zend.cache.html" title="Chapter 4. Zend_Cache">
<link rel="chapter" href="zend.config.html" title="Chapter 5. Zend_Config">
<link rel="chapter" href="zend.console.getopt.html" title="Chapter 6. Zend_Console_Getopt">
<link rel="chapter" href="zend.controller.html" title="Chapter 7. Zend_Controller">
<link rel="chapter" href="zend.currency.html" title="Chapter 8. Zend_Currency">
<link rel="chapter" href="zend.date.html" title="Chapter 9. Zend_Date">
<link rel="chapter" href="zend.db.html" title="Chapter 10. Zend_Db">
<link rel="chapter" href="zend.debug.html" title="Chapter 11. Zend_Debug">
<link rel="chapter" href="zend.dojo.html" title="Chapter 12. Zend_Dojo">
<link rel="chapter" href="zend.dom.html" title="Chapter 13. Zend_Dom">
<link rel="chapter" href="zend.exception.html" title="Chapter 14. Zend_Exception">
<link rel="chapter" href="zend.feed.html" title="Chapter 15. Zend_Feed">
<link rel="chapter" href="zend.filter.html" title="Chapter 16. Zend_Filter">
<link rel="chapter" href="zend.form.html" title="Chapter 17. Zend_Form">
<link rel="chapter" href="zend.gdata.html" title="Chapter 18. Zend_Gdata">
<link rel="chapter" href="zend.http.html" title="Chapter 19. Zend_Http">
<link rel="chapter" href="zend.infocard.html" title="Chapter 20. Zend_InfoCard">
<link rel="chapter" href="zend.json.html" title="Chapter 21. Zend_Json">
<link rel="chapter" href="zend.layout.html" title="Chapter 22. Zend_Layout">
<link rel="chapter" href="zend.ldap.html" title="Chapter 23. Zend_Ldap">
<link rel="chapter" href="zend.loader.html" title="Chapter 24. Zend_Loader">
<link rel="chapter" href="zend.locale.html" title="Chapter 25. Zend_Locale">
<link rel="chapter" href="zend.log.html" title="Chapter 26. Zend_Log">
<link rel="chapter" href="zend.mail.html" title="Chapter 27. Zend_Mail">
<link rel="chapter" href="zend.measure.html" title="Chapter 28. Zend_Measure">
<link rel="chapter" href="zend.memory.html" title="Chapter 29. Zend_Memory">
<link rel="chapter" href="zend.mime.html" title="Chapter 30. Zend_Mime">
<link rel="chapter" href="zend.openid.html" title="Chapter 31. Zend_OpenId">
<link rel="chapter" href="zend.paginator.html" title="Chapter 32. Zend_Paginator">
<link rel="chapter" href="zend.pdf.html" title="Chapter 33. Zend_Pdf">
<link rel="chapter" href="zend.registry.html" title="Chapter 34. Zend_Registry">
<link rel="chapter" href="zend.rest.html" title="Chapter 35. Zend_Rest">
<link rel="chapter" href="zend.search.lucene.html" title="Chapter 36. Zend_Search_Lucene">
<link rel="chapter" href="zend.server.html" title="Chapter 37. Zend_Server">
<link rel="chapter" href="zend.service.html" title="Chapter 38. Zend_Service">
<link rel="chapter" href="zend.session.html" title="Chapter 39. Zend_Session">
<link rel="chapter" href="zend.soap.html" title="Chapter 40. Zend_Soap">
<link rel="chapter" href="zend.test.html" title="Chapter 41. Zend_Test">
<link rel="chapter" href="zend.text.html" title="Chapter 42. Zend_Text">
<link rel="chapter" href="zend.timesync.html" title="Chapter 43. Zend_TimeSync">
<link rel="chapter" href="zend.translate.html" title="Chapter 44. Zend_Translate">
<link rel="chapter" href="zend.uri.html" title="Chapter 45. Zend_Uri">
<link rel="chapter" href="zend.validate.html" title="Chapter 46. Zend_Validate">
<link rel="chapter" href="zend.version.html" title="Chapter 47. Zend_Version">
<link rel="chapter" href="zend.view.html" title="Chapter 48. Zend_View">
<link rel="chapter" href="zend.xmlrpc.html" title="Chapter 49. Zend_XmlRpc">
<link rel="appendix" href="requirements.html" title="Appendix A. Zend Framework Requirements">
<link rel="appendix" href="coding-standard.html" title="Appendix B. Zend Framework Coding Standard for PHP">
<link rel="appendix" href="copyrights.html" title="Appendix C. Copyright Information">
<link rel="index" href="the.index.html" title="Index">
<link rel="section" href="zend.console.getopt.html#zend.console.getopt.introduction" title="6.1. Introduction to Getopt">
<link rel="section" href="zend.console.getopt.rules.html" title="6.2. Declaring Getopt Rules">
<link rel="section" href="zend.console.getopt.fetching.html" title="6.3. Fetching Options and Arguments">
<link rel="section" href="zend.console.getopt.configuration.html" title="6.4. Configuring Zend_Console_Getopt">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader"><table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">Chapter 6. Zend_Console_Getopt</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="zend.config.adapters.xml.html">Prev</a> </td>
<th width="60%" align="center"> </th>
<td width="20%" align="right"> <a accesskey="n" href="zend.console.getopt.rules.html">Next</a>
</td>
</tr>
</table></div>
<div class="chapter" lang="en">
<div class="titlepage"><div><div><h2 class="title">
<a name="zend.console.getopt"></a>Chapter 6. Zend_Console_Getopt</h2></div></div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
<dt><span class="sect1"><a href="zend.console.getopt.html#zend.console.getopt.introduction">6.1. Introduction to Getopt</a></span></dt>
<dt><span class="sect1"><a href="zend.console.getopt.rules.html">6.2. Declaring Getopt Rules</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="zend.console.getopt.rules.html#zend.console.getopt.rules.short">6.2.1. Declaring Options with the Short Syntax</a></span></dt>
<dt><span class="sect2"><a href="zend.console.getopt.rules.html#zend.console.getopt.rules.long">6.2.2. Declaring Options with the Long Syntax</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="zend.console.getopt.fetching.html">6.3. Fetching Options and Arguments</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="zend.console.getopt.fetching.html#zend.console.getopt.fetching.exceptions">6.3.1. Handling Getopt Exceptions</a></span></dt>
<dt><span class="sect2"><a href="zend.console.getopt.fetching.html#zend.console.getopt.fetching.byname">6.3.2. Fetching Options by Name</a></span></dt>
<dt><span class="sect2"><a href="zend.console.getopt.fetching.html#zend.console.getopt.fetching.reporting">6.3.3. Reporting Options</a></span></dt>
<dt><span class="sect2"><a href="zend.console.getopt.fetching.html#zend.console.getopt.fetching.remainingargs">6.3.4. Fetching Non-option Arguments</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="zend.console.getopt.configuration.html">6.4. Configuring Zend_Console_Getopt</a></span></dt>
<dd><dl>
<dt><span class="sect2"><a href="zend.console.getopt.configuration.html#zend.console.getopt.configuration.addrules">6.4.1. Adding Option Rules</a></span></dt>
<dt><span class="sect2"><a href="zend.console.getopt.configuration.html#zend.console.getopt.configuration.addhelp">6.4.2. Adding Help Messages</a></span></dt>
<dt><span class="sect2"><a href="zend.console.getopt.configuration.html#zend.console.getopt.configuration.addaliases">6.4.3. Adding Option Aliases</a></span></dt>
<dt><span class="sect2"><a href="zend.console.getopt.configuration.html#zend.console.getopt.configuration.addargs">6.4.4. Adding Argument Lists</a></span></dt>
<dt><span class="sect2"><a href="zend.console.getopt.configuration.html#zend.console.getopt.configuration.config">6.4.5. Adding Configuration</a></span></dt>
</dl></dd>
</dl>
</div>
<div class="sect1" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="zend.console.getopt.introduction"></a>6.1. Introduction to Getopt</h2></div></div></div>
<p>
        The <code class="code">Zend_Console_Getopt</code> class helps command-line
        applications to parse their options and arguments.
    </p>
<p>
        Users may specify command-line arguments when
        they execute your application.  These arguments have meaning to the
        application, to change the behavior in some way, or choose resources,
        or specify parameters.  Many options have developed customary meaning,
        for example "<code class="code">--verbose</code>" enables extra output from many
        applications.  Other options may have a meaning that is different for
        each application.  For example, "<code class="code">-c</code>" enables different
        features in <span><strong class="command">grep</strong></span>, <span><strong class="command">ls</strong></span>, and
        <span><strong class="command">tar</strong></span>.
    </p>
<p>
        Below are a few definitions of terms.  Common usage of the terms
        varies, but this documentation will use the definitions below.
    </p>
<div class="itemizedlist"><ul type="disc">
<li><p>
                "argument": a string that occurs on the command-line
                following the name of the command.  Arguments may be
                options or else may appear without an option, to name
                resources on which the command operates.
            </p></li>
<li><p>
                "option": an argument that signifies that the command
                should change its default behavior in some way.
            </p></li>
<li><p>
                "flag": the first part of an option, identifies
                the purpose of the option.  A flag is preceded
                conventionally by one or two dashes
                ("<code class="code">-</code>" or "<code class="code">--</code>").
                A single dash precedes a single-character flag
                or a cluster of single-character flags.
                A double-dash precedes a multi-character flag.
                Long flags cannot be clustered.
            </p></li>
<li>
<p>
                "parameter": the secondary part of an option; a data value
                that may accompany a flag, if it is applicable to the
                given option.  For example, many commands accept a
                "<code class="code">--verbose</code>" option, but typically
                this option has no parameter.  However, an option like
                "<code class="code">--user</code>" almost always requires
                a following parameter.
            </p>
<p>
                A parameter may be given as a separate argument following a
                flag argument, or as part of the same argument string,
                separated from the flag by an equals symbol ("<code class="code">=</code>").
                The latter form is supported only by long flags.
                For example,
                <code class="code">-u username</code>, <code class="code">--user username</code>,
                and <code class="code">--user=username</code> are forms supported
                by <code class="code">Zend_Console_Getopt</code>.
            </p>
</li>
<li><p>
                "cluster": multiple single-character flags combined
                in a single string argument and preceded by a single
                dash.  For example, "<span><strong class="command">ls -1str</strong></span>"
                uses a cluster of four short flags.  This command is
                equivalent to "<span><strong class="command">ls -1 -s -t -r</strong></span>".
                Only single-character flags can be clustered.
                You cannot make a cluster of long flags.
            </p></li>
</ul></div>
<p>
        For example, in "<code class="code">mysql --user=root mydatabase</code>",
        "<code class="code">mysql</code>" is a <span class="emphasis"><em>command</em></span>,
        "<code class="code">--user=root</code>" is an <span class="emphasis"><em>option</em></span>,
        "<code class="code">--user</code>" is a <span class="emphasis"><em>flag</em></span>,
        "<code class="code">root</code>" is a <span class="emphasis"><em>parameter</em></span> to the option,
        and "<code class="code">mydatabase</code>" is an argument but not an option
        by our definition.
    </p>
<p>
        <code class="code">Zend_Console_Getopt</code> provides an interface to declare
        which flags are valid for your application, output an error and usage
        message if they use an invalid flag, and report to your application
        code which flags the user specified.
    </p>
<div class="note"><table border="0" summary="Note: Getopt is not an application framework">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"></td>
<th align="left">Getopt is not an application framework</th>
</tr>
<tr><td align="left" valign="top"><p>
            <code class="code">Zend_Console_Getopt</code> does <span class="emphasis"><em>not</em></span>
            interpret the meaning of flags and parameters, nor does this class
            implement application workflow or invoke application code.
            You must implement those actions in your own application code.
            You can use the <code class="code">Zend_Console_Getopt</code> class to parse
            the command-line and provide object-oriented methods for querying
            which options were given by a user, but code to use this
            information to invoke parts of your application should be in
            another PHP class.
        </p></td></tr>
</table></div>
<p>
        The following sections describe usage of <code class="code">Zend_Console_Getopt</code>.
    </p>
</div>
</div>
<div class="navfooter"><table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="zend.config.adapters.xml.html">Prev</a> </td>
<td width="20%" align="center"> </td>
<td width="40%" align="right"> <a accesskey="n" href="zend.console.getopt.rules.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">5.4. Zend_Config_Xml </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> 6.2. Declaring Getopt Rules</td>
</tr>
</table></div>
<div class="revinfo"></div>
</body>
</html>
